//
//  main.c
//  杨辉三角（递归实现）
//
//  Created by 卜绎皓 on 2022/3/1.
//

#include <stdio.h>

//long getadd(int a,int b){
//    return (b == 1||b == a) ? 1 : getadd(a - 1,b - 1) + getadd(a - 1,b);
//}
//
//int main(){
//    int i,j,n = 0;
//    printf("输入所需杨辉三角的行数（1-20）：");
//    scanf("%d",&n);
//    for(i = 1;i <=n; i++){
//        for(j = 1;j <= i;j++){
//            printf("%6ld",getadd(i,j));
//        }
//        printf("\n");
//    }
//    return 0;
//}

int mat(int a){
    return (a == 1 || a == 0) ? 1 : a*mat(a - 1);
}

int main(){
    int i,j,n = 0;
    int temp = 0;
    printf("输入所需杨辉三角的行数（1-20）：");
    scanf("%d",&n);
    for(i = 0;i < n; i++){
        for(j = 0;j <= i; j++){
            temp = mat(i) / (mat(i - j)*mat(j));
            printf("%5d",temp);
        }
        printf("\n");
    }

    return 0;
}

